package com.lebang.mapper;

import com.lebang.configuration.datasource.DataSource;
import com.lebang.domain.DownloadMemberRecord;
import com.lebang.entity.member.LbbMember;
import com.lebang.entity.member.LbbMemberRecord;
import com.lebang.example.LbbMemberRecordExample;
import com.lebang.model.MemberTaskModel;
import com.lebang.model.TaskResult;
import com.lebang.model.enums.buss.TaskCategory;
import com.lebang.model.enums.buss.TaskStatus;
import com.lebang.model.excel.CommonExcel;
import com.lebang.model.recordback.MemberRecordLog;
import com.lebang.model.recordback.RecordCallBack;
import com.lebang.model.statistics.RecordModel;
import com.lebang.model.statistics.StatisticsRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * LbbMemberRecordMapper继承基类
 */
@Mapper
public interface LbbMemberRecordMapper {

    @DataSource("commonDB")
    List<LbbMemberRecord> selectbyexamplewithblobs(LbbMemberRecordExample example);

    @DataSource("commonDB")
    int nones(@Param("taskId") String taskId, @Param("stime") String stime, @Param("etime") String etime);

    @DataSource("commonDB")
    int checkSuccesss(@Param("taskId") String taskId, @Param("stime") String stime, @Param("etime") String etime);

    /**
     * 用户任务列表
     *
     * @param userid
     * @param page
     * @param size
     * @return
     * @author weizx
     * @date 2018年8月22日 下午2:45:46
     */
    List<MemberRecordLog> sosoHasCompleted(@Param("userid") String userid, @Param("page") int page, @Param("size") int size);

    LbbMemberRecord queryrouse(@Param("rouse") String rouse, @Param("userid") String userid, @Param("taskid") String taskid, @Param("stime") String stime, @Param("etime") String etime);

    int findRecordByMemberId(String memberid);

    @DataSource("commonDB")
    LbbMemberRecord selectByMemberId(@Param("memberId") String memberId);

    BigDecimal todayUserTaskMoney(@Param("star") LocalDateTime star, @Param("end") LocalDateTime end);

    int updatebyexamplewithblobs(@Param("record") LbbMemberRecord record, @Param("example") LbbMemberRecordExample example);

    int hasRecordCount(@Param("star") LocalDateTime star, @Param("end") LocalDateTime end);

    List<DownloadMemberRecord> selectByTimeAndAppStore(@Param("appStore") String s, @Param("star") LocalDateTime star, @Param("end") LocalDateTime end);

    BigDecimal todayMyTaskMoney(@Param("star") LocalDateTime star, @Param("end") LocalDateTime end);

    int countByQuery(@Param("memberId") String memberId, @Param("appId") String appId, @Param("status") String status);

    @DataSource("commonDB")
    LbbMemberRecord selectByid(@Param("id") int id, @Param("hasdeleted") String hasdeleted, @Param("userid") String userid);

    @DataSource("commonDB")
    List<Map<String, Object>> checkFailure(@Param("taskId") String taskId, @Param("stime") String stime, @Param("etime") String etime);

    @DataSource("commonDB")
    List<LbbMemberRecord> getListByMemberId(LbbMemberRecordExample example);

    int insert(LbbMemberRecord record);

    List<RecordCallBack> appListForRouse(@Param("userid") String userid, @Param("imei") String imei, @Param("page") int page, @Param("size") int size, @Param("brand") String brand, @Param("stime") String stime, @Param("etime") String etime, @Param("needCheck") String needCheck);

    /**
     * 任务完成列表
     *
     * @param category
     * @param status
     * @param stime
     * @param etime
     * @return
     * @author weizx
     * @date 2018年8月1日 下午3:43:25
     */
    @DataSource("commonDB")
    List<Map<String, Object>> pagging(@Param("category") String category, @Param("status") String status, @Param("stime") String stime, @Param("etime") String etime, @Param("offset") Integer offset, @Param("limit") Integer limit, @Param("title") String title, @Param("customer") String customer, @Param("phone") String phone, @Param("statust") Integer statust);

    List<Map<String, Object>> finddetailList(@Param("startNum") Integer startNum, @Param("limit") Integer limit, @Param("tableName") String tableName, @Param("taskId") String taskId, @Param("star") String star, @Param("end") String end);

    @DataSource("commonDB")
    int updateByPrimaryKeySelective(LbbMemberRecord record);

    int recordCount(@Param("star") LocalDateTime star, @Param("end") LocalDateTime end);

    @DataSource("commonDB")
    List<CommonExcel> selectByTaskIdAndCategory(@Param("taskId") String taskId, @Param("category") String category, @Param("list") List<String> status, @Param("star") Date star, @Param("end") Date end);

    List<Map<String, Object>> findList(@Param("startNum") Integer startNum, @Param("limit") Integer limit, @Param("star") String star, @Param("end") String end, @Param("title") String title, @Param("tableName") String tableName, @Param("userid") String userid, @Param("customerid") String customerid);

    int deleteByExample(LbbMemberRecordExample example);

    List<RecordModel> getAllTitleList();

    List<StatisticsRecord> sumRecordByTime(@Param("star") LocalDateTime star, @Param("end") LocalDateTime end);

    LbbMemberRecord selectByPrimaryKey(Long id);

    int updateByPrimaryKey(LbbMemberRecord record);

    @DataSource("commonDB")
    List<Map<String, Object>> getPhone(@Param("taskId") String taskId, @Param("stime") String stime, @Param("etime") String etime);

    List<LbbMember> selectAllmember(@Param("star") String star, @Param("end") String end);

    List<RecordCallBack> appListForSoso(@Param("userid") String userid, @Param("page") Integer page, @Param("size") Integer size, @Param("brand") String brand, @Param("showHome") Integer showHome, @Param("para") String para);

    @DataSource("commonDB")
    List<String> getMemberTaskList(String memberid);

    List<LbbMemberRecord> getList(@Param("memberRecord") String memberRecord, @Param("taskId") String taskId, @Param("stime") String stime, @Param("etime") String etime);

    @DataSource("commonDB")
    int getsuccess(@Param("taskId") String taskId, @Param("type") String type);


    /**
     * 任务已完成数量
     *
     * @param category
     * @param taskid
     * @param stime
     * @param etime
     * @return
     * @author weizx
     * @date 2018年7月20日 下午4:42:09
     */
    int searchTotal(@Param("category") String category, @Param("taskid") String taskid, @Param("stime") String stime, @Param("etime") String etime);

    long finddetailCount(@Param("taskId") String taskId, @Param("star") String star, @Param("end") String end);

    @DataSource("commonDB")
    List<LbbMemberRecord> findCheckListByid(@Param("list") List<String> list);

    List<LbbMember> findlist();

    /**
     * 用户做过的搜搜任务
     *
     * @param userid
     * @param page
     * @param size
     * @return
     * @author weizx
     * @date 2018年7月20日 下午9:08:31
     */
    List<MemberRecordLog> commonHasCompleted(@Param("userid") String userid, @Param("page") int page, @Param("size") int size);

    List<Long> getSuccess(@Param("star") String star, @Param("end") String end);

    @DataSource("commonDB")
    int insertSelective(LbbMemberRecord record);

    @DataSource("commonDB")
    LbbMemberRecord getByMemberIdandTaskid(@Param("taskId") String taskId, @Param("memeberId") String memeberId, @Param("remark") String remark);

    LbbMemberRecord querys(@Param("taskId") String taskId, @Param("userId") String userId, @Param("stime") String stime, @Param("etime") String etime);

    int findTaskByMemberIdAndTakIdAndCategory(@Param("memberId") String memberId, @Param("taskId") String taskId, @Param("category") TaskCategory category);

    Long getTrade(@Param("star") String star, @Param("end") String end);

    List<LbbMemberRecord> selectByExample(LbbMemberRecordExample example);
    @DataSource("commonDB")
    int checkMemberRecordStatus(@Param("memberId") String memberId, @Param("name") String name);

    @DataSource("commonDB")
    int deleteByid(Long parseInt);

    @DataSource("commonDB")
    int totals(@Param("taskId") String taskId, @Param("stime") String stime, @Param("etime") String etime);

    int updateByExampleSelective(@Param("record") LbbMemberRecord record, @Param("example") LbbMemberRecordExample example);

    List<RecordCallBack> appListForCommon(@Param("userid") String userid, @Param("page") Integer page, @Param("size") Integer size, @Param("brand") String brand, @Param("showHome") Integer showHome);

    @DataSource("commonDB")
    void cleanByMemberId(@Param("memberId") String memberId, @Param("name") String name);

    int checkRecordStatus(@Param("memberId") String memberId, @Param("taskId") String taskId, @Param("status") String status);

    int deleteByPrimaryKey(Long id);

    long countByExample(LbbMemberRecordExample example);

    int updateByExample(@Param("record") LbbMemberRecord record, @Param("example") LbbMemberRecordExample example);

    @DataSource("commonDB")
    int getfail(@Param("taskId") String taskId, @Param("type") String type);

    @DataSource("commonDB")
    List<LbbMemberRecord> selectMemberRecordStatus(@Param("memberId") String memberId, @Param("name") String name);

    List<RecordModel> cencusTodayRecord(@Param("star") LocalDateTime star, @Param("end") LocalDateTime end);

    int sumMemberTradeByTime(@Param("appStore") String appStore, @Param("star") LocalDateTime star, @Param("end") LocalDateTime end, @Param("type") int type);

    @DataSource("commonDB")
    List<Map<String, Object>> checkSuccess(@Param("taskId") String taskId, @Param("stime") String stime, @Param("etime") String etime);

    @DataSource("commonDB")
    int checkFailures(@Param("taskId") String taskId, @Param("stime") String stime, @Param("etime") String etime);

    @DataSource("commonDB")
    int checkRecordByImei(@Param("imei") String imei, @Param("taskId") String taskId);

    long findCount(@Param("star") String star, @Param("end") String end, @Param("title") String title, @Param("tableName") String tableName, @Param("userid") String userid, @Param("customerid") String customerid);

    @DataSource("commonDB")
    int updateByPrimaryKeyWithBLOBs(LbbMemberRecord record);

    @DataSource("commonDB")
    int getWaitSubitAndOrderId(@Param("star") LocalDateTime star, @Param("end") LocalDateTime end, @Param("taskId") String taskId, @Param("orderId") String orderId);

    @DataSource("commonDB")
    int updatebyprimarykeywithblobs(LbbMemberRecord record);

    @DataSource("commonDB")
    LbbMemberRecord checkRecord(@Param("memberId") String memberId, @Param("taskId") String taskId, @Param("category") String category, @Param("imei") String imei, @Param("status") TaskStatus status);

    @DataSource("commonDB")
    List<Map<String, Object>> none(@Param("taskId") String taskId, @Param("stime") String stime, @Param("etime") String etime);

    @DataSource("commonDB")
    LbbMemberRecord findTaskByMemberIdAndTakIdAndCategoryModel(@Param("memberId") String memberId, @Param("taskId") String taskId, @Param("category") TaskCategory category);

    @DataSource("commonDB")
    int updateByExampleWithBLOBs(@Param("record") LbbMemberRecord record, @Param("example") LbbMemberRecordExample example);

    /**
     * 任务完成列表 - 数量
     *
     * @param category
     * @param status
     * @param stime
     * @param etime
     * @return
     * @author weizx
     * @date 2018年8月1日 下午3:42:32
     */
    @DataSource("commonDB")
    int total(@Param("category") String category, @Param("status") String status, @Param("stime") String stime, @Param("etime") String etime, @Param("title") String title, @Param("customer") String customer, @Param("phone") String phone, @Param("statust") Integer statust);

    @DataSource("commonDB")
    List<StatisticsRecord> sumRecordByTimeSuccess(@Param("star") LocalDateTime star, @Param("end") LocalDateTime end, @Param("appId") Integer appId);

    @DataSource("commonDB")
    Integer countFaiulRecord(@Param("taskId") String taskId, @Param("star") LocalDateTime star, @Param("end") LocalDateTime end, @Param("appId") Integer appId);

    @DataSource("commonDB")
    List<TaskResult> getMemberTaskListWait(String userid);

    @DataSource("commonDB")
    List<String> getAllMemberTaskList(String userid);

    @DataSource("commonDB")
    void checkMemberAllRecord(@Param("memberId") String memberId, @Param("appid") String appid, @Param("status") String status);

    @DataSource("commonDB")
    void updateByMemberId(@Param("memberId") String memberId);

    @DataSource("commonDB")
    int countByQuery1(@Param("memberId") String userid, @Param("appid") String appid);


    @DataSource("commonDB")
    int getWaitSubit(@Param("taskId") String taskId);

    List<DownloadMemberRecord> selectString();

    void updateDaan(@Param("id") Long id, @Param("s1") String s1);

    List<DownloadMemberRecord> selectDaan(@Param("title") String title);

    @DataSource("commonDB")
    LbbMemberRecord getByMemberId(@Param("memberId") String memberId);

    @DataSource("commonDB")
    List<MemberTaskModel> getRecordsByMemberId(@Param("page") Long page, @Param("limit") Integer limit, @Param("memberId") String memberId, @Param("list") List<String> stateList);

    @DataSource("commonDB")
    List<String> getTaskRecordList(@Param("memberId") String memberId);

    @DataSource("commonDB")
    List<String> getToRedo(@Param("memberId") String memberId);

    @DataSource("commonDB")
    List<String> getToRecord(@Param("memberId") String memberId);

    @DataSource("commonDB")
    Integer checkRecordByPhone(@Param("phone") String phone, @Param("taskId") String taskId);

    @DataSource("commonDB")
    List<String> getByPhone(String phone);

    @DataSource("commonDB")
    void updateMultipleById(@Param("multiple") Integer multiple, @Param("id") Long id);

    @DataSource("commonDB")
    int getSuccessRecord(@Param("taskId") String taskId,@Param("star") LocalDateTime star,@Param("end") LocalDateTime end);

    @DataSource("commonDB")
    List<StatisticsRecord> sumRecordGroupByAppStore(@Param("star") LocalDateTime star,@Param("end") LocalDateTime end,@Param("appId") Integer appId);
}